1. Technical Field
The present invention relates to modeling components for application assembly, and more particularly, to modeling components for application assembly with tags.
2. Discussion of the Related Art
Configurable applications for automating the processing of syndication feeds (i.e., Atom and RSS) are gaining increasing interest and attention on the Web. As of this writing, there are over 30,000 customized feed processing flows (referred to as “pipes”) published on Yahoo Pipes, the most popular service of this kind. Yahoo Pipes offers hosted feed processing and provides a rich set of user-configurable processing modules, which extends beyond the typical syndication tools and includes advanced text analytics such as language translation and keyword extraction. The Yahoo Pipes service also comes with a visual editor for flows of services and feeds. In the example of FIG. 1, the feeds are Yahoo Answers and Yahoo News, which can be parameterized and truncated, while union and sort are services. There exist similar frameworks that are provided as a hosted service (e.g., IBM DAMIA) or as downloadable server-side software (e.g., /n software's RSSBus, IBM Mashup Starter Kit and IBM Project Zero).
Automatic service discovery and composition is one of the promises of Service Oriented Architecture (SOA) that is hard to achieve in practice. Currently, composition is done with graphical tools by manually selecting services and establishing their interactions. Business Process Execution Language (BPEL)-WS language has been developed to describe composite services. However, describing composite services using BPEL-WS is tedious and requires extensive knowledge of the services being composed.
Automatic composition work has been focusing on composition using simple compatibility constraints, as well as semantic descriptions of services, such as Ontology Web Language (OWL)-S. The drawback of these approaches is that they do not provide an easy way of interacting with the composer/user. For example, even if the user is goal-oriented and does not require knowledge of the services, the user must be familiar with the ontology that was used to describe services. In addition, it is difficult for novice users to create goal specifications, since that involves studying the ontology to learn the terms the system uses. Further, the ontology does not automatically provide a method for verifying the requests. Hence, users do not have any guidance from the system that could help in specifying requests. This turns service composition into a tedious trial and error process.
Similarly to how programs can be composed of operators and functions, composite services describe service invocations and other lower-level constructs. Composite services are processing graphs composed of smaller service components. A service component can be an invocation of an existing service, an external data input (e.g., a user-specified parameter or data source), a data processor operator (e.g., an arithmetic operator), or another (smaller) composite service specified as a processing graph of service components.
While many execution environments include tools that assist users in defining composite services, these tools typically require a detailed definition of the processing flow, including all service components and communication between the components. One example of this type of tool is IBM WebSphere Studio.
In contrast, methods such as planning can be used to automatically compose new composite services based on a high level input provided by the user. Automatic composition methods require less knowledge about the service components and in general only require the user to specify the composition goal in application domain terms.
For the purposes of automatic composition, in many scenarios the service components can be described in terms of their data effects and preconditions. In particular, we assume that a description (such as WSDL or Java object code with optional metadata annotations) of each service component specifies the input requirements of the service component (such as data type, semantics, access control labels, etc.). We refer to these input requirements as preconditions of service invocation, or simply preconditions. The description also specifies the effects of the service, describing the outputs of the service, including information such as data type, semantics, etc. In general, a component description may describe outputs as a function of inputs, so that the description of the output can only be fully determined once the specific inputs of the component have been determined. Note that in practical implementations the invocations can be synchronous, such as subrouting or RPC calls, or asynchronous, such as asynchronous procedure calls or message exchange or message flow.
Under these assumptions, an automated planner can then be used to automatically assemble processing graphs based on a user-provided description of the desired output of the application. The descriptions of the components are provided to the planner in the form of a domain description. The planner can also take into account the specification of available primal inputs to the workflow, if not all inputs are available for a particular planning request.
The planner composes a workflow by connecting components, starting from the primal inputs. It evaluates possible combinations of components, by computing descriptions of component outputs, and comparing them to preconditions of components connected to the output. More than one component input can be connected to one component output or one primal input. Logically, this amounts to sending multiple copies of data produced by the component output, with one copy sent to each of the inputs. In practical implementation these do not have to be copies, and it is possible to pass data by reference instead of by value. The process terminates when an output of a component (or a set of outputs taken together) satisfies the condition specified in the user requirement. Note that all conditions are evaluated at plan time, before any applications are deployed or executed.
If multiple alternative compositional applications can be constructed and shown to satisfy the same request, the planner may use heuristics and utility functions to rank the alternatives and select the highest ranked plans.
The application, once composed, is deployed in an execution environment and can be executed one or more times.
Examples of a planner and an execution environment are described in Zhen Liu, Anand Ranganathan and Anton Riabov, “A Planning Approach for Message-Oriented Semantic Web Service Composition”, in AAAI-2007.
Similar work has been done in the contexts of Stream Processing, Web Services and Grid Computing.
Work has been done on automatic goal-driven composition in the past, especially within the AI planning and semantic web communities. Some of this work uses ontologies and associated standards such as OWL-S to describe components used in composition. See E. Sirin and B. Parsia. Planning for Semantic Web Services. In Semantic Web Services Workshop at 3rd ISWC, 2004.
Other works use process models or transition systems. See M. Pistore, P. Traverso, P. Bertoli, and A. Marconi. Automated synthesis of composite BPEL4WS web service. In ICWS, 2005.
Work has also been done using a formalism called Stream Processing Planning Language (SPPL) for stream processing and ontology-based semantic web service composition. See A. Riabov and Z. Liu. Planning for stream processing systems. In AAAI'05, July 2005, A. Riabov and Z. Liu. Scalable planning for distributed stream processing systems. In ICAPS'06, 2006, and Z. Liu, A. Ranganathan, and A. Riabov. A planning approach for message-oriented semantic web service composition. In AAAI'07, 2007.
A formalism that is similar in expressivity to SPPL, and in certain aspects exceeds it, has been proposed in Semantic Streams system, K. Whitehouse, F. Zhao, and J. Liu. Semantic streams: A framework for composable semantic interpretation of sensor data. In EWSN'06, 2006, which allows user to pose queries based on the semantics of sensor data.